Package bg.smoc.web.utils

Source Code of bg.smoc.web.utils.SessionUtil

package bg.smoc.web.utils;

import javax.servlet.ServletContext;

import bg.smoc.model.manager.ContestManager;
import bg.smoc.model.manager.GraderManager;
import bg.smoc.model.manager.LoginManager;
import bg.smoc.model.manager.ManagerMediator;
import bg.smoc.model.manager.PersonManager;
import bg.smoc.model.manager.PrintManager;
import bg.smoc.model.manager.UserAccountManager;
import bg.smoc.model.serializer.ContestSerializer;
import bg.smoc.model.serializer.PersonSerializer;
import bg.smoc.model.serializer.SerializerFactory;
import bg.smoc.model.serializer.UserAccountSerializer;

public class SessionUtil {
    private static SessionUtil instance;

    private LoginManager loginManager;

    private UserAccountManager userAccountManager;

    private ContestManager contestManager;

    private GraderManager graderManager;

    private PersonManager personManager;
   
    private PrintManager printManager;

    private ContestSerializer contestSerializer;

    private PersonSerializer personSerializer;
   
    private UserAccountSerializer userAccountSerializer;

    private String workingDirectory;

    private int gradingPort;

    private SerializerFactory serializerFactory;

    private ManagerMediator mediator;

    private SessionUtil() {
    }

    /**
     * Returns and instance of the SessionUtil and from there all managers.
     * However for it to function properly initialize must be called at least
     * once.
     *
     * @return the SessionUtil singleton
     */
    synchronized public static SessionUtil getInstance() {
        if (instance == null) {
            instance = new SessionUtil();
        }
        return instance;
    }

    public LoginManager getLoginManager() {
        return loginManager;
    }

    public UserAccountManager getUserAccountManager() {
        return userAccountManager;
    }

    public ContestManager getContestManager() {
        return contestManager;
    }

    public GraderManager getGraderManager() {
        return graderManager;
    }

    public PersonManager getPersonManager() {
        return personManager;
    }
   
    public PrintManager getPrintManager() {
        return printManager;
    }

    private void initiateManagers() {
        setUpUserAccountSerializer();
        setUpContestSerializer();
        setUpPersonSerializer();

        setUpManagers();
    }

    /**
     * Creates, initializes and stores to the application context the
     * UserAccountManager, LoginManager, ContestManager, PersonManager and
     * GraderManager.
     */
    private void setUpManagers() {
        userAccountManager = new UserAccountManager(userAccountSerializer);
        loginManager = new LoginManager();
        personManager = new PersonManager(personSerializer);
        graderManager = new GraderManager(gradingPort, workingDirectory);
        contestManager = new ContestManager(workingDirectory, contestSerializer);
        printManager = new PrintManager(workingDirectory);
       
        mediator = new ManagerMediator();
        mediator.setManagersFromSessionUtil(this);

        contestManager.initActiveUsers();
        // schedule all running contests for termination
        contestManager.scheduleRunningContests();
    }

    /**
     * Creates, initializes the UserAccountSerializer and stores it to the
     * applicationContext.
     */
    private void setUpUserAccountSerializer() {
        userAccountSerializer = serializerFactory.createUserAccountSerializer();
    }

    /**
     * Creates, initializes the ContestSerializer and stores it to the
     * applicationContext.
     */
    private void setUpContestSerializer() {
        contestSerializer = serializerFactory.createContestSerializer();
    }

    /**
     * Creates, initializes the PersonSerializer and stores it to the
     * applicationContext.
     */
    private void setUpPersonSerializer() {
        personSerializer = serializerFactory.createPersonSerializer();
    }

    /**
     * Creates a SessionUtil that can be used to access different application
     * scope managers.
     *
     * @param servletContext
     *            the servletContext where the Managers and Serializers are
     *            stored. It must remain valid for the period of use of the
     *            SessionUtil object
     * @return an active SessionUtil object
     */

    /**
     * Initializes the SessionUtil to a given servletContext. This method must
     * be called once at the application startup.
     *
     * @param servletContext
     *            the context in which the managers and serializers are
     *            applicable
     */
    public void initialize(ServletContext servletContext, SerializerFactory serializerFactory) {
        this.serializerFactory = serializerFactory;

        workingDirectory = servletContext.getRealPath("/judge/storage/");
        gradingPort = Integer.parseInt(servletContext.getInitParameter("gradingPort"));
        initiateManagers();
    }

}
TOP

Related Classes of bg.smoc.web.utils.SessionUtil

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.